Поделиться через


System.Collections.ObjectModel.KeyedCollection<TKey,TItem>. Метод ChangeItemKey

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Метод ChangeItemKey(TItem, TKey) не изменяет внедренный itemключ; он просто заменяет ключ, сохраненный в словаре подстановки. Таким образом, если newKey ключ отличается от внедренного ключа, вы не можете получить доступ item с помощью ключа, возвращаемогоitemGetKeyForItem.

Этот метод ничего не делает, если KeyedCollection<TKey,TItem> у него нет словаря подстановки.

Каждый ключ в объекте KeyedCollection<TKey,TItem> должен быть уникальным. Ключ не может быть null.

Этот метод является операцией O(1).

Заметки для разработчиков

Перед изменением ключа, внедренного в элемент, необходимо вызвать этот метод, чтобы обновить ключ в словаре подстановки. Если порог создания словаря равен -1, вызов этого метода не требуется.

Не предоставляйте метод как ChangeItemKey общедоступный метод производного класса. Неправильное использование этого метода ставит словарь подстановки из синхронизации с ключами элементов. Например, установка ключа null на другое значение добавляет несколько ключей для элемента в словарь подстановки. Предоставьте этот метод внутренним образом, чтобы разрешить мутируемые ключи элементов: если ключ для элемента изменяется, этот метод используется для изменения ключа в словаре подстановки.